package tpalgo3.modelo.obstaculos;

import java.awt.Point;
import java.util.List;

import tpalgo3.modelo.enemigos.Aereo;
import tpalgo3.modelo.enemigos.Enemigo;

public abstract class Obstaculo {
	private Point posicion;
		
	public Point getPosicion(){
		return this.posicion;
	}	
	protected void setPosicion(Point posicion) {
		this.posicion = posicion;
	}

	public abstract int getCosto();
	
	public abstract void afectarEnemigo(List<Enemigo> enemigos);
	
	/**
	 * Metodo que obtiene un enemigo para ser afectado por el obstaculo que lo invoca.
	 * @param enemigos Lista con todos los enemigos del nivel actual
	 * @return Un enemigo vivo (no aereo) y no actualmente afectado por un obstaculo
	 */
	protected Enemigo obtenerEnemigoAAfectar(List<Enemigo> enemigos) {
		for (Enemigo e : enemigos) {
			if (e.tieneResistencia() && !Aereo.class.isInstance(e)) {
				if (e.isAfectadoPorArena() || e.isAfectadoPorPegote()){
					return null;
				}
				else {
					if (e.getPosicion().equals(getPosicion())) {
						return e;
					}
				}
			}
		}
		return null;
	}
}